/*
  1.获取用户的收货地址
    1 绑定单击事件
    2 调用小程序内置的api  获取用户的收货地址
*/

import { getSetting, chooseAddress, openSetting} from '../../utils/asyncWx'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    address: {},
    cart: [],
    totalPrice: 0,
    totalNum: 0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  onShow() {
    // 1.获取缓存中收货地址信息
    const address = wx.getStorageSync('address');
    // 1.获取缓存中购物车数据
    const cart = wx.getStorageSync('cart') || [];
    // 1.计算全选
      // every数组方法 会遍历  会接受一个回调函数,每一个回掉函数都返回true,那么every方法的返回值为true;只要有一个回掉函数返回了false,那么不再循环执行,直接返回false
      // 空数组  调用every,返回值就是true
    // const allChecked = cart.length?cart.every(v=>v.checked):false;
    let allChecked = true;
    // 1.总价格 总数量
    let totalPrice = 0;
    let totalNum = 0;

    cart.forEach(v => {
      if(v.checked){
        totalPrice+= v.num*v.goods_price;
        totalNum+= v.num
      }else {
        allChecked=false
      }
    });
    // 判断数组是否为空
    allChecked=cart.length!=0?allChecked:false;
    this.setData({
      address,
      cart,
      allChecked,
      totalPrice,
      totalNum
    })
  },

  //点击 收货地址
  handleChooseAddress() {
      // 1. 获取权限状态
    wx.getSetting({
      success: (result) => {
        // console.log(result);
        //2.获取权限状态  主要发现一些  属性名很怪异的时候  都要使用[]形式来获取属性值
        const scopeAddress = result.authSetting["scope.address"];
        if (scopeAddress === true || scopeAddress === undefined) {
          wx.chooseAddress({
            success: (result1) => {
              // console.log(result1)
              wx.setStorageSync('address', result1)
            }
          })
        } else {
          //3. 用户  以前拒绝过授予权限  先诱导用户打开授权页面
          wx.openSetting({
            success: (result2) => {
              //4.可以调用  收货地址代码
              wx.chooseAddress({
                success: (result3) => {
                  let address = result3
                  wx.setStorageSync("address", address)
                }
              })
            }
          })
        }
        
      }
    })
  }
})